The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Traditional schema processors and compilers are designed to process XML schemas based on assumptions that typically do not hold for large and complex industry schemas. For example, traditional schema processors and compilers typically process an XML schema by storing the entire schema in volatile memory in order not to incur overhead for any disk accesses and disk retrievals during schema-based operations that process XML data. Further, the volatile memory structures used by traditional schema processors and compilers to store XML schemas are not space-efficient because a lot of schema information is deliberately stored in multiple different copies in order to allow for easy access during the schema-based operations that process XML data. For example, traditional schema processors and compilers typically store in volatile memory the schema elements of an XML schema with or under their corresponding parent elements, which results in storing multiple copies of the same repeating schema elements that appear in the schema under multiple different parent elements.
At least in part because of such deliberate duplication of schema information, the in-memory size of XML schemas becomes a problem for traditional schema processors and compilers when such processors and compilers need to process large and complex industry schemas. This problem is exacerbated by the fact that a large industry XML schema would typically reference, include, or otherwise incorporate multiple other schemas in-full or in-part. Thus, even though some traditional schema processors and compilers may use memory structures and processing techniques that are designed for faster processing, such memory structures and processing techniques work well only for small XML schemas that do not have large in-memory sizes.
The large in-memory sizes of complex industry XML schemas cause another processing problem for traditional schema processors and compilers. When loading such XML schemas into memory, traditional schema processors and compilers need to allocate and track a lot of memory blocks and objects, thus incurring a significant memory management overhead. This memory management overhead may be so significant that it may cause traditional schema processors and compilers to incur very high processing times (e.g., because of excessive swapping of memory pages to and from disk) or even stall as they run out of memory when processing large and complex industry XML schemas.